Задача: на чистом javascript сформировать и сохранить из браузера файл формата csv, адекватно открывающийся табличным редактором (например OnlyOffice)
Решение:
rows=[];
rows.push(["aa","bb"]);
let csvContent = "data:text/csv;charset=utf-8," + rows.map(e => e.join(",")).join("\n");
var encodedUri = encodeURI(csvContent);
var link = document.createElement("a");
link.setAttribute("href", encodedUri);
link.setAttribute("download", "download.csv");
document.body.appendChild(link);
link.click();
Что тут происходит: заполняется некий массив, далее создаётся ссылка в DOM, и в элемент ссылки записываются данные массива. Далее эмулируется нажатие собственно на эту ссылку.
Хм..вот плохо иногда быть самоучкой по методу научного тыка. Для некоторых вещей изобретал велосипед при наличии штатного функционала. Ранее всплывающие окна отрисовывал в стиле bootstrap, а оказывется для этого есть штатные вещи. Далее пример окна:
Проткнул давече колесо на самокате. Ну думаю если колеса на машинах клеят за 600р, так уж наверное с самокатом вопрос решить фигня вопрос. Открываю авито…и тут я прихудел чуток, от этих цен: от 2500 за колесо, плюс стоимость камеры от 800р. И далее сыграла у меня моя природная жадность. Купил на WB камеру за 300р, и комлект лопаточек для 176р. Пришли через день. Далее я утром попыхтел с час. Причем дольше всего тупо искал как отвинтить мотор-колесо у самоката. И всё, замена осуществлена, самокат снова в работе. Цена вопроса 476р плюс час времени.
И тут я подумал, что это отличный бизнес-план, как заработать кучу денег за летний сезон: нужно всего лишь подать объявление на то-же авито, зарядив ценник в два раза дешевле за замену камеры. Но тут меня уже обломал сам авито: сказал что в этом разделе объявления платные. Аж 263 рубля за разовое размещение. В общем так я и не стал долларовым миллионером..
Задача: установить нейросеть на свой ПК, и пообщаться с ней посредством python. Маленькая задачка, часть более глобальной далее (в следующих частях) — дообучить на своих данных, и сделать скрипт отвечающий на вопросы пользователей.
Статья подготовлена на основе следующих источников:
Сначала установим оболочку для нейросетей. Например я остановился (в данный момент) на https://gpt4all.io. Там есть инсталляторы для разных ОС. Я пока остановился для Windows. После установки нужно выбрать модель для скачивания, в зависимости от того какое у вас «железо». В моем случае, т.к. памяти достаточно (64ггб оперативы + 32ггб RTX 3060), я выбрал DeepSeek-R1-Distill-Qwen-14B
После загрузки модели, попробовал создать чат, и в принципе модель бодренько стала мне отвечать. Правда во время генерации ответов все ресурсы ушли в «полочку». Но ответы вполне осмысленные:
Далее попытался написать скрипт на python, который непосредственно может цепляться к установленной модели. Для этого необходимо в настройка gpt4all включить соответствующую опцию:
После этого становится доступен api через обычный http. Точки вызовов следующие:
http://localhost:4891/v1/models — получить список установленных моделей
http://localhost:4891/v1/models/ — получить настройки выбранной модели
http://localhost:4891/v1/completions — генерация текста
http://localhost:4891/v1/chat/completions — общение в режиме чата
Небольшая сноска. Наш любимый РКН, 21.03.2026 заблокировал часть адресов, среди которых под раздачу попала и установка пакетов через pip install. Я сиё обошел установкой VPN Amnezia. Далее упоминать об этом не буду, и считаю что способ установки пакетов у вас есть.
Ну а дальше простой скрипт:
import requests
# URL, куда отправляем запрос (если вы установили GPT-4All локально)
url = "http://localhost:4891/v1/chat/completions"
headers = {
"Content-Type": "application/json",
}
data = {
"model": "DeepSeek-R1-Distill-Qwen-14B", # Используйте модель, которую поддерживает GPT-4All
"messages": [{"role": "user", "content": "Сколько будет 2+2?"}],
"max_tokens": 500,
"temperature": 0.28
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
print(response.json())
else:
print(response)
print(f"Ошибка: {response.status_code}")
Результат:
Хм, пользователь спросил «Сколько будет 2+2?» на русском языке. Нужно ответить правильно и понятно. Проверю: 2 плюс 2 равно 4.